#ifndef __FRM_BASE_H
#define __FRM_BASE_H

#include "gui.h"
#include <stdlib.h>

typedef struct
{
	void (*exit)   (void);
	void (*info)   (void);
	void (*down)   (void);
	void (*up)     (void);
	void (*left)   (void);
	void (*right)  (void);
	void (*setting)(void);
	void (*enter)  (void);
	
	void (*key0)   (void);
	void (*key1)   (void);
	void (*key2)   (void);
	void (*key3)   (void);
	void (*key4)   (void);
	void (*key5)   (void);
	void (*key6)   (void);
	void (*key7)   (void);
	void (*key8)   (void);
	void (*key9)   (void);
	void (*keyp)   (void);
	void (*clear)  (void);
}GUI_FormKeysType;

typedef struct
{
	void (*draw)   (void);
	void (*load)   (void);
	void (*unload) (void);
	void (*update) (uint8_t keyvalue);
  GUI_FormKeysType const *keys;
  uint32_t refresh;
}GUI_FormType;

extern const GUI_FormType Gui_FrmMainmenu;

extern volatile GUI_FormType const *Gui_FormCurrent;
extern void GUI_FormExec(const GUI_FormType *frm);

#endif /* __FRM_BASE_H */
